home *** CD-ROM | disk | FTP | other *** search
/ Nibble Magazine / nib04.dsk / APPLE FINANCIER - PART I.bas < prev    next >
BASIC Source File  |  2023-02-26  |  4KB  |  88 lines

  1. 200  REM  MENU
  2. 201  ONERR  GOTO 500
  3. 202  HOME : VTAB 2: HTAB 12: INVERSE : PRINT " SELECT ONE OF THE FOLLOWING ": NORMAL : GOSUB 400
  4. 280  PRINT  TAB( 14)"DIRECT REDUCTION LOAN  <8>"
  5. 290  PRINT  TAB( 14);"AMORTIZATION SCHEDULE  <9>"
  6. 292  GOSUB 400: PRINT  TAB( 24);"<RETURN> TO QUIT"
  7. 293  PRINT : PRINT : PRINT  TAB( 30);"WHICH   ";: POKE  -16368,0: GET ANS$: PRINT ANS$
  8. 295 ANS =  VAL(ANS$): IF ANS = 0  THEN  END 
  9. 296  ON ANS GOTO 1000,2000,3000,4000,5000,6000,7000,8000,9000
  10. 298 :
  11. 300  REM  PRINT USING
  12. 302 P$ =  STR$( INT((P +.005) *100))
  13. 304  IF  LEN(P$) <3  THEN P$ =  LEFT$("000",(3 - LEN(P$))) +P$
  14. 305 PP$ =  LEFT$(P$,( LEN(P$) -2))
  15. 306  IF DP = 0  THEN P$ = PP$: GOTO 308
  16. 307 P$ = PP$ +"." + RIGHT$(P$,DP)
  17. 308 P$ =  RIGHT$("          " +P$,PL)
  18. 310  RETURN 
  19. 312 :
  20. 400  FOR DOT = 0 TO 39: PRINT ".";: NEXT DOT: RETURN 
  21. 402 :
  22. 500  REM  ERROR HANDLING ROUTINE
  23. 502  HOME : VTAB 5: INVERSE : PRINT "CHECK APPLESOFT MANUAL PG 136 FOR ERR": NORMAL 
  24. 504  PRINT : PRINT "ERROR IS NUMBER "; PEEK(222): PRINT "LOCATED IN LINE "; PEEK(218) + PEEK(219) *256: POKE 34,0: END 
  25. 505 :
  26. 8000  REM  DIRECT REDUCTION LOAN
  27. 8002 :
  28. 8004  REM  PGM INITIALIZATION
  29. 8006  CLEAR :DP = 2
  30. 8007 :
  31. 8100  REM  MENU / INPUT SECTION
  32. 8102  HOME : VTAB 5
  33. 8104  PRINT "1. MAX BORROW AMOUNT"; TAB( 25);: IF FLAG  THEN  PRINT A(1): GOTO 8108
  34. 8106  INPUT A(1)
  35. 8108  PRINT "2. CHANGE IN AMOUNT"; TAB( 25);: IF FLAG  THEN  PRINT A(2): GOTO 8112
  36. 8110  INPUT A(2)
  37. 8112  PRINT "3. MAX INTEREST RATE"; TAB( 25);: IF FLAG  THEN  PRINT A(3): GOTO 8116
  38. 8114  INPUT A(3)
  39. 8116  PRINT "4. CHANGE IN INT RATE"; TAB( 25);: IF FLAG  THEN  PRINT A(4): GOTO 8120
  40. 8118  INPUT A(4)
  41. 8120  PRINT "5. LOAN TERM (MONTHS)"; TAB( 25);: IF FLAG  THEN  PRINT A(5): GOTO 8124
  42. 8122  INPUT A(5):FLAG = 1
  43. 8124  PRINT : INVERSE : PRINT "TYPE 'END' TO RETURN TO MENU ": NORMAL : VTAB 18: INPUT "ANY CHANGES? ";Y$
  44. 8126  IF  LEFT$(Y$,1) = "N"  THEN 8146
  45. 8128  IF Y$ = "END"  THEN 200
  46. 8130  INPUT "WHICH ONE? ";W: PRINT "CHANGE PART ";W;" TO ";: INPUT A(W): GOTO 8102
  47. 8132 :
  48. 8134  REM  PAYMENT CALCULATION
  49. 8136 I = J/1200
  50. 8138 PMT = (K *I)/(1 -(1 +I) ^( -A(5)))
  51. 8140  RETURN 
  52. 8142 :
  53. 8144  REM  OUTPUT HEADING SECTION
  54. 8146  HOME : HTAB 13: INVERSE : PRINT " TERM: ";A(5);" MONTHS ": NORMAL 
  55. 8148  VTAB 2: PRINT "PRCNT";
  56. 8150  FOR K = A(1) -4 *A(2) TO A(1)  STEP A(2):P$ =  STR$( INT(K)):PL = 7: GOSUB 308: PRINT P$;: NEXT K
  57. 8152  GOSUB 400
  58. 8154 :
  59. 8156  REM  MAIN PROGRAM
  60. 8158 J = A(3)
  61. 8160 P = J:PL = 5: GOSUB 302: PRINT P$;
  62. 8162  FOR K = A(1) -4 *A(2) TO A(1)  STEP A(2)
  63. 8164  GOSUB 8136
  64. 8166 P = PMT:PL = 7: GOSUB 302: PRINT P$;
  65. 8168  NEXT K
  66. 8170 J = J -A(4)
  67. 8172  IF  PEEK(37) <22  AND J >0  THEN 8160
  68. 8174  VTAB 24: INVERSE : PRINT " ANY KEY FOR MENU ";: NORMAL 
  69. 8176  CALL  -756
  70. 8178  GOTO 8102
  71. 8180 :
  72. 9000  REM  AMORTIZATION SCHEDULE
  73. 9001  HOME : VTAB 5: INPUT "YEARLY INTEREST RATE % ";I:I = I/1200: INPUT "MONTHLY PAYMENT ";PMT: INPUT "INITIAL LOAN AMOUNT ";PV
  74. 9002  HOME :DP = 2
  75. 9003  PRINT  TAB( 5);"PAID TO"; TAB( 15);"PAID"; TAB( 22);"REMAIN"; TAB( 33);"TOTAL"
  76. 9004  PRINT "NO"; TAB( 5);"PRINCIP"; TAB( 14);"TO INT"; TAB( 22);"BALANCE"; TAB( 32);"INTEREST": FOR DOT = 0 TO 39: PRINT ".";: NEXT DOT: POKE 34,3
  77. 9005 OB = PV:K = 1
  78. 9006 A = (1 +I) ^( -K)
  79. 9007 NB = (((A -1)/I) *PMT +PV)/A
  80. 9008  IF NB < = 0  THEN 9014
  81. 9009 PRIN = OB -NB:K$ =  STR$(K):K$ = K$ +"  ": PRINT  LEFT$(K$,3);:P = PRIN:PL = 7: GOSUB 300: PRINT P$;
  82. 9010 IN = PMT -PRIN:P = IN:PL = 9: GOSUB 300: PRINT P$;:P = NB:PL = 10: GOSUB 300: PRINT P$;
  83. 9011 TIN = K *PMT -PV +NB:P = TIN: GOSUB 300: PRINT P$
  84. 9012 K = K +1:OB = NB
  85. 9013  IF  PEEK(37) < >23  THEN 9006
  86. 9014  VTAB 24: INVERSE : PRINT " ESC TO EXIT OR ANY KEY TO CONTINUE ";: NORMAL 
  87. 9015  POKE  -16368,0: GET Z$: IF Z$ < > CHR$(27)  THEN  HOME : GOTO 9006
  88. 9016  POKE 34,0: GOTO 200